
package com.femass.controller;

import java.io.InputStream;
import com.femass.model.Artigo;
import com.femass.model.Tema;
import org.primefaces.model.UploadedFile;
import com.femass.repository.ArtigoRepository;
import com.femass.util.Repositorios;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.util.List;
import org.primefaces.model.StreamedContent;

public class GestaoArtigos {
    
    private Repositorios repositorios = new Repositorios();
    private ArtigoRepository artigoRepository = this.repositorios.getArtigos();
    
    
    private String extrairExtensaoArquivo(UploadedFile file){
        return file.getContentType();
    }
    
    private byte[] importarArquivoByte(UploadedFile file){
        System.out.println("ImportarByte");
        //Criar um array de byte do tamando do arquivo;
        byte[] byteFile = new byte[(int)file.getSize()];
        
        //Transformando o arquivo em stream de bytes;
        try {
            
            InputStream in = file.getInputstream();
            in.read(byteFile);
            in.close();
            
            return byteFile;
            
        } catch (Exception e) {
            e.printStackTrace();
        }
        
        return null;
        
    }
    
    private StreamedContent importarByteArquivo(byte[] bytes){
        
        StreamedContent file;
        
         try {
           
             File f = new File("/temp/Artigo.pdf");
             BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(f));
             bos.close();
//             fos.write(bytes);
//             fos.close();
//             
//             InputStream stream = ((ServletContext)FacesContext.getCurrentInstance().getExternalContext().getContext()).getResourceAsStream("/temp/Artigo.pdf");
//	     file = new DefaultStreamedContent(stream, "application/pdf", "Artigo.pdf");


            return null;
            
        } catch (Exception e) {
            e.printStackTrace();
        }
        
        return null;    
        
    }
    
    public List<Artigo> listaTodos(){
        return this.artigoRepository.todos();
    }
    
    public void salvarArtigo(Artigo artigo, UploadedFile arquivo){
        
        artigo.setExtensaoArquivo(this.extrairExtensaoArquivo(arquivo));
        artigo.setArquivo(this.importarArquivoByte(arquivo));
               
        this.artigoRepository.salvar(artigo);
                
    }
    
    public List<Artigo> porTema(Tema tema){
        return this.artigoRepository.porTema(tema);
    }
    
    public void teste(byte[] bytes){
        System.out.println("Entrou no teste");
        this.importarByteArquivo(bytes);
    }
}
